<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /**
       * @param {string} haystack
       * @param {string} needle
       * @return {number}
       */
      var strStr = function (haystack, needle) {
        var flag = true;
        var j = 0;
        // 拿needle到haystack中一个个遍历
        while (flag) {
          // 这个循环用来比较第一个字母能不能匹配上
          for (; j < haystack.length; j++) {
            if (needle[0] === haystack[j]) {
              break;
            }
            // 第一个字符找到末尾还是没有
            if (j === haystack.length - 1) {
              return -1;
            }
          }
          // 找到第一个字符相同
          for (var k = 0; k < needle.length; k++) {
            // 有一个不同 还需要判断找完没有，找完就退出
            if (needle[k] !== haystack[j + k]) {
              // 比较到中途失败，需要继续比较
              if (j + k < haystack.length - 1) {
                // needle从头开始；回到上一个for循环
                j++;
                break;
              }
              // 如果是比较到了最后就说明
              return -1;
            }
            // 如果循环走完了就说明都匹配上了
            if (k === needle.length - 1) {
              flag = false;
            }
          }
          if (j >= haystack.length) {
            flag = false;
          }
        }
        return j;
      };

      var haystack = "hello";
      var needle = "ll";
      console.log(strStr(haystack, needle));
    </script>
  </body>
</html>
